<?php
/**
 * 适配器模式
 * 结构型设计模式
 * 把实现了不同接口的对象通过适配器的方式组合起来放在一个新的环境
 */

spl_autoload_register('autoload');

function autoload($class) 
{
    require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}

/*============================= 测试 =============================*/
use adapter\DbAdapter;

$db = new DbAdapter('pdo');
$db->connect('localhost', '3306', 'db_ip_business', 'root', '123456');
$res = $db->query("select id,ip_prop_no from tb_ip_case");
var_dump($res);
$db->close();


/*
小结：
适配器就好比读卡器、好比安卓/苹果手机充电器转接头，
将一个类的接口转换成客户希望的另外一个接口，使得原本由于接口不兼容的类可以在一起工作。
比如类名或方法名发生变化，旧的类名和方法名还要继续保持使用

应用场景：
不同数据库连接适配
不同缓存memcache、redis、file、apc适配
涉及到老接口的改造

优点： 
1、可以让任何两个没有关联的类一起运行
2、提高了类的复用
3、增加了类的透明度
4、灵活性好

缺点： 
1、过多地使用适配器，会让系统非常零乱，不易整体进行把握。
比如，明明看到调用的是 A 接口，其实内部被适配成了 B 接口的实现，
一个系统如果太多出现这种情况，无异于一场灾难。
因此如果不是很有必要，可以不使用适配器，而是直接对系统进行重构。 
2.由于 JAVA 至多继承一个类，所以至多只能适配一个适配者类，而且目标类必须是抽象类。

注意事项：适配器不是在详细设计时添加的，而是解决正在服役的项目的问题。

*/

